package com.yabushan.web.controller.system;

import com.yabushan.common.annotation.Log;
import com.yabushan.common.core.controller.BaseController;
import com.yabushan.common.core.domain.AjaxResult;
import com.yabushan.common.core.page.TableDataInfo;
import com.yabushan.common.enums.BusinessType;
import com.yabushan.common.utils.StringUtils;
import com.yabushan.common.utils.poi.ExcelUtil;
import com.yabushan.system.domain.YmxAsinTemplateInfo;
import com.yabushan.system.domain.YmxTemplateInfo;
import com.yabushan.system.domain.vo.YmxAsinTemplateInfoVo;
import com.yabushan.system.service.IYmxAsinTemplateInfoService;
import com.yabushan.system.service.IYmxTemplateInfoService;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;

import javax.annotation.Resource;
import java.util.List;

/**
 * 模板Controller
 *
 * @author yabushan
 * @date 2021-04-14
 */
@RestController
@RequestMapping("/ymx/ymxasintemplateinfo")
public class YmxAsinTemplateInfoController extends BaseController {
    @Autowired
    private IYmxAsinTemplateInfoService ymxAsinTemplateInfoService;

    @Resource
    private IYmxTemplateInfoService ymxTemplateInfoService;

    /**
     * 查询模板列表
     */
    @PreAuthorize("@ss.hasPermi('ymx:ymxasintemplateinfo:list')")
    @GetMapping("/list")
    public TableDataInfo list(YmxAsinTemplateInfo ymxAsinTemplateInfo) {
        startPage();
       /* List<YmxAsinTemplateInfo> allList = ymxAsinTemplateInfoService.getAllList();
        getDataTable(allList);*/
        List<YmxAsinTemplateInfo> list = ymxAsinTemplateInfoService.selectYmxAsinTemplateInfoList(ymxAsinTemplateInfo);
        return getDataTable(list);
    }

    /**
     * 导出模板列表
     */
    @PreAuthorize("@ss.hasPermi('ymx:ymxasintemplateinfo:export')")
    @Log(title = "模板", businessType = BusinessType.EXPORT)
    @GetMapping("/export")
    public AjaxResult export(YmxAsinTemplateInfo ymxAsinTemplateInfo) {
        List<YmxAsinTemplateInfo> list = ymxAsinTemplateInfoService.selectYmxAsinTemplateInfoList(ymxAsinTemplateInfo);
        ExcelUtil<YmxAsinTemplateInfo> util = new ExcelUtil<YmxAsinTemplateInfo>(YmxAsinTemplateInfo.class);
        return util.exportExcel(list, "ymxasintemplateinfo");
    }

    /**
     * 获取模板详细信息
     */
    @PreAuthorize("@ss.hasPermi('ymx:ymxasintemplateinfo:query')")
    @GetMapping(value = "/{asinTemplateId}")
    public AjaxResult getInfo(@PathVariable("asinTemplateId") String asinTemplateId) {
        return AjaxResult.success(ymxAsinTemplateInfoService.selectYmxAsinTemplateInfoById(asinTemplateId));
    }

    /**
     * 新增模板
     */
    @PreAuthorize("@ss.hasPermi('ymx:ymxasintemplateinfo:add')")
    @Log(title = "模板", businessType = BusinessType.INSERT)
    @PostMapping
    public AjaxResult add(@RequestBody YmxAsinTemplateInfo ymxAsinTemplateInfo) {
        return toAjax(ymxAsinTemplateInfoService.insertYmxAsinTemplateInfo(ymxAsinTemplateInfo));
    }

    /**
     * 修改模板
     */
    @PreAuthorize("@ss.hasPermi('ymx:ymxasintemplateinfo:edit')")
    @Log(title = "模板", businessType = BusinessType.UPDATE)
    @PutMapping
    public AjaxResult edit(@RequestBody YmxAsinTemplateInfo ymxAsinTemplateInfo) {
        return toAjax(ymxAsinTemplateInfoService.updateYmxAsinTemplateInfo(ymxAsinTemplateInfo));
    }

    /**
     * 删除模板
     */
    @PreAuthorize("@ss.hasPermi('ymx:ymxasintemplateinfo:remove')")
    @Log(title = "模板", businessType = BusinessType.DELETE)
    @DeleteMapping("/{asinTemplateIds}")
    public AjaxResult remove(@PathVariable String[] asinTemplateIds) {
        return toAjax(ymxAsinTemplateInfoService.deleteYmxAsinTemplateInfoByIds(asinTemplateIds));
    }

    @Log(title = "批量导入模板信息", businessType = BusinessType.IMPORT)
    @PreAuthorize("@ss.hasPermi('ymx:ymxasintemplateinfo:importDatatemplate')")
    @PostMapping("/importDatatemplate")
    @ApiOperation(value = "批量导入模板信息")
    public AjaxResult importDatatemplate(MultipartFile file, boolean updateSupport) throws Exception {
        ExcelUtil<YmxAsinTemplateInfoVo> util = new ExcelUtil<YmxAsinTemplateInfoVo>(YmxAsinTemplateInfoVo.class);
        List<YmxAsinTemplateInfoVo> userList = util.importExcel(file.getInputStream());
        int size = userList.size();
        for (int i = 0; i < size; i++) {
            YmxAsinTemplateInfoVo asinTemplateInfoVo = userList.get(i);
            if (!StringUtils.isEmpty(asinTemplateInfoVo.getAsin())) {
                String templateName = asinTemplateInfoVo.getTemplateName();
                List<YmxTemplateInfo> list = ymxTemplateInfoService.selectYmxTemplateInfoByName(templateName);
                YmxAsinTemplateInfo ymxAsinTemplateInfo = new YmxAsinTemplateInfo();
                ymxAsinTemplateInfo.setAsin(asinTemplateInfoVo.getAsin());
                ymxAsinTemplateInfo.setAsinTemplateName(asinTemplateInfoVo.getAsinTemplateName());
                int size1 = list.size();
                if (size1 != 0) {
                    ymxAsinTemplateInfo.setTemplateId(list.get(0).getTemplateId());
                }
                ymxAsinTemplateInfo.setDiscountCode(asinTemplateInfoVo.getDiscountCode());
                ymxAsinTemplateInfo.setWarrantyStartDate(asinTemplateInfoVo.getWarrantyStartDate());
                ymxAsinTemplateInfo.setWarrantyEndDate(asinTemplateInfoVo.getWarrantyEndDate());
                ymxAsinTemplateInfo.setOrderName(asinTemplateInfoVo.getOrderName());
                ymxAsinTemplateInfo.setOrderImage(asinTemplateInfoVo.getOrderImage());
                YmxAsinTemplateInfo ymxAsinTemplateInfoTemp = new YmxAsinTemplateInfo();
                ymxAsinTemplateInfo.setAsin(asinTemplateInfoVo.getAsin());
                YmxAsinTemplateInfo ymxAsinTemplateInfo1 = new YmxAsinTemplateInfo();
                ymxAsinTemplateInfo1.setAsin(asinTemplateInfoVo.getAsin());
                List<YmxAsinTemplateInfo> ymxAsinTemplateInfoVos = ymxAsinTemplateInfoService.selectYmxAsinTemplateInfoList(ymxAsinTemplateInfo1);
                if(ymxAsinTemplateInfoVos.size()>0){
                    //做更新操作
                    YmxAsinTemplateInfo ymxAsinTemplateInfoVo = ymxAsinTemplateInfoVos.get(0);
                    ymxAsinTemplateInfo.setAsinTemplateId(ymxAsinTemplateInfoVo.getAsinTemplateId());
                    ymxAsinTemplateInfoService.updateYmxAsinTemplateInfo(ymxAsinTemplateInfo);
                }else{
                    //做新增操作
                    if (ymxAsinTemplateInfo != null) {
                        ymxAsinTemplateInfoService.insertYmxAsinTemplateInfo(ymxAsinTemplateInfo);
                    }
                }



            }
        }
        // LoginUser loginUser = tokenService.getLoginUser(ServletUtils.getRequest());
        //String operName = loginUser.getUsername();
        //String message = userService.importUser(userList, updateSupport, operName);
        return AjaxResult.success("批量导入模板信息");
    }

}
